using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace AppManagement.MainManagers
{
	#region using
	using DevComponents.DotNetBar;
	using AppManagement.Models;
	using AppManagement.Repositories;
	using AppManagement.Helpers;
	using System.Data;
	using System.Drawing;
	using System.IO;
	#endregion

	public partial class FrmQuanLyTuyenXe : Office2007Form
	{
		public EventHandler Handler { get; set; }

		public FrmQuanLyTuyenXe()
		{
			InitializeComponent();
            btnXoa.Enabled = false;
            btnCapNhat.Enabled = false;
		}

		private void FrmQuanLyTuyenXe_Load(object sender, EventArgs e)
		{
			InitGridView();
            InitGridViewChuyenXe();
			LoadData();
			dtgvData.ClearSelection();
		}

		private void btnThem_Click(object sender, EventArgs e)
		{
			FrmLapTuyenXe frm = new FrmLapTuyenXe();
			frm.Handler += LoadData;
			frm.ShowDialog();
		}

		private void btnXoa_Click(object sender, EventArgs e)
		{
            if (ChuyenXeRepository.SelectByMaTuyenXe(int.Parse(dtgvData.SelectedRows[0].Cells["MaTuyenXe"].Value.ToString())).Count > 0)
            {
                MessageBoxEx.Show("Đã tồn tại chuyến xe thuộc về tuyến xe này, nên không được phép xóa", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
			if (dtgvData.SelectedRows.Count > 0)
			{
				if (MessageBoxEx.Show("Bạn có chắc chắn xóa dòng này không?", "Xóa", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
				{
                    if (TuyenXeRepository.Delete(int.Parse(dtgvData.SelectedRows[0].Cells["MaTuyenXe"].Value.ToString())))
					{
						MessageBoxEx.Show("Xóa dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
						LoadData();
					}
					else
					{
						MessageBoxEx.Show("Xóa dữ liệu thất bại", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
					}
				}
			}
		}

		private void btnCapNhat_Click(object sender, EventArgs e)
		{
            if (dtgvData.SelectedRows.Count > 0)
            {
                FrmLapTuyenXe frm = new FrmLapTuyenXe(int.Parse(dtgvData.SelectedRows[0].Cells["MaTuyenXe"].Value.ToString()));
                frm.ShowDialog();
                LoadChuyenXe(TuyenXeRepository.SelectByID(int.Parse(dtgvData.SelectedRows[0].Cells["MaTuyenXe"].Value.ToString())));
            }
		}

		private void btnThoat_Click(object sender, EventArgs e)
		{
			this.Close();
		}

		private void InitGridView()
		{
			DataGridViewTextBoxColumn objColumn = new DataGridViewTextBoxColumn
			{
				HeaderText = "Mã tuyến xe",
				DataPropertyName = "MaTuyenXe",
				Name = "MaTuyenXe",
				Width = (int)((dtgvData.Width - dtgvData.RowHeadersWidth)*((double)1/5))
			};
			dtgvData.Columns.Add(objColumn);
			objColumn = new DataGridViewTextBoxColumn
			{
				HeaderText = "Điểm bắt đầu",
				DataPropertyName = "MaDiemBatDau",
				Name = "MaDiemBatDau",
				Width = (int)((dtgvData.Width - dtgvData.RowHeadersWidth)*((double)1/5))
			};
			dtgvData.Columns.Add(objColumn);
			objColumn = new DataGridViewTextBoxColumn
			{
                HeaderText = "Điểm kết thúc",
				DataPropertyName = "MaDiemKetThuc",
				Name = "MaDiemKetThuc",
				Width = (int)((dtgvData.Width - dtgvData.RowHeadersWidth)*((double)1/5))
			};
			dtgvData.Columns.Add(objColumn);
			objColumn = new DataGridViewTextBoxColumn
			{
				HeaderText = "Độ dài (Km)",
				DataPropertyName = "DoDai",
				Name = "DoDai",
				Width = (int)((dtgvData.Width - dtgvData.RowHeadersWidth)*((double)1/5))
			};
			dtgvData.Columns.Add(objColumn);
			objColumn = new DataGridViewTextBoxColumn
			{
				HeaderText = "Ngày hoạt động",
				DataPropertyName = "NgayHoatDong",
				Name = "NgayHoatDong",
				Width = (int)((dtgvData.Width - dtgvData.RowHeadersWidth)*((double)1/5)) - 1
			};
			dtgvData.Columns.Add(objColumn);
		}

		private void LoadData(object sender, EventArgs e)
		{
			LoadData();
		}

		private void LoadData()
		{
			var lstItem = TuyenXeRepository.SelectAll();
			var dt = new DataTable();
			dt.Columns.Add("MaTuyenXe");
			dt.Columns.Add("MaDiemBatDau");
			dt.Columns.Add("MaDiemKetThuc");
			dt.Columns.Add("DoDai");
			dt.Columns.Add("NgayHoatDong");
			for (int i = 0; i < lstItem.Count; i++)
			{
				dt.Rows.Add(lstItem[i].MaTuyenXe, lstItem[i].DiaDiem.TenDiaDiem, lstItem[i].DiaDiem1.TenDiaDiem, lstItem[i].DiaDiem1.DoDai, "Thứ: " + lstItem[i].NgayHoatDong);
			}
			DataView objTimeSheetDV = new System.Data.DataView(dt);
			objTimeSheetDV.AllowNew = false;
			dtgvData.AutoGenerateColumns = false;
			dtgvData.DataSource = objTimeSheetDV;
			dtgvData.ClearSelection();
		}

		private void dtgvData_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
		{
			if (dtgvData.SelectedRows.Count > 0)
			{
				FrmLapTuyenXe frm = new FrmLapTuyenXe(int.Parse(dtgvData.SelectedRows[0].Cells["MaTuyenXe"].Value.ToString()));
				frm.Handler += LoadData;
				frm.ShowDialog();
			}
		}

        private void dtgvData_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dtgvData.SelectedRows == null || dtgvData.SelectedRows.Count == 0)
                return;

            // Disable btnThem
            btnThem.Enabled = false;
            btnCapNhat.Enabled = true;
            btnXoa.Enabled = true;

            LoadChuyenXe(TuyenXeRepository.SelectByID(int.Parse(dtgvData.SelectedRows[0].Cells["MaTuyenXe"].Value.ToString())));
        }

        private void InitGridViewChuyenXe()
        {
            DataGridViewTextBoxColumn objColumn = new DataGridViewTextBoxColumn
            {
                HeaderText = "Mã chuyến xe",
                DataPropertyName = "MaChuyenXe",
                Name = "MaChuyenXe",
                Width = (int)((dtgvChuyenXe.Width - dtgvChuyenXe.RowHeadersWidth) * ((double)1 / 5))
            };
            dtgvChuyenXe.Columns.Add(objColumn);

            objColumn = new DataGridViewTextBoxColumn
            {
                HeaderText = "Tài xế",
                DataPropertyName = "HoTen",
                Name = "HoTen",
                Width = (int)((dtgvChuyenXe.Width - dtgvChuyenXe.RowHeadersWidth) * ((double)1 / 5))
            };
            dtgvChuyenXe.Columns.Add(objColumn);

            objColumn = new DataGridViewTextBoxColumn
            {
                HeaderText = "Mã BS Xe",
                DataPropertyName = "MaBSXe",
                Name = "MaBSXe",
                Width = (int)((dtgvChuyenXe.Width - dtgvChuyenXe.RowHeadersWidth) * ((double)1 / 5))
            };
            dtgvChuyenXe.Columns.Add(objColumn);

            objColumn = new DataGridViewTextBoxColumn
            {
                HeaderText = "Giờ khởi hành",
                DataPropertyName = "GioKhoiHanh",
                Name = "GioKhoiHanh",
                Width = (int)((dtgvChuyenXe.Width - dtgvChuyenXe.RowHeadersWidth) * ((double)1 / 5))
            };
            dtgvChuyenXe.Columns.Add(objColumn);
            objColumn = new DataGridViewTextBoxColumn
            {
                HeaderText = "Đơn giá",
                DataPropertyName = "DonGia",
                Name = "DonGia",
                Width = (int)((dtgvChuyenXe.Width - dtgvChuyenXe.RowHeadersWidth) * ((double)1 / 5)) - 2
            };
            dtgvChuyenXe.Columns.Add(objColumn);
        }

        private void LoadChuyenXe(TuyenXe tuyenxe)
        {
            var lst = ChuyenXeRepository.SelectByMaTuyenXe(tuyenxe.MaTuyenXe);
            
            DataTable dt = new DataTable();
                dt.Columns.Add("MaChuyenXe");
                dt.Columns.Add("HoTen");
                dt.Columns.Add("MaBSXe");
                dt.Columns.Add("GioKhoiHanh");
                dt.Columns.Add("DonGia");

                foreach (var item in lst)
                {
                    dt.Rows.Add(item.MaChuyenXe, item.NhanVien.HoTen, item.MaBSXe, item.GioKhoiHanh, string.Format("{0:0,0}", item.DonGia));
                }

                DataView objTimeSheetDV = new System.Data.DataView(dt);
                objTimeSheetDV.AllowNew = false;
                dtgvChuyenXe.AutoGenerateColumns = false;
                dtgvChuyenXe.DataSource = objTimeSheetDV;
                dtgvChuyenXe.ClearSelection();    
        }

        private void btnReset_Click(object sender, EventArgs e)
        {
            // Disable btnThem
            btnThem.Enabled = true;
            btnCapNhat.Enabled = false;
            btnXoa.Enabled = false;
            dtgvData.ClearSelection();
        }
	}

}
